#!/usr/bin/env node

const axios = require('axios');

async function testConnection() {
  console.log('🔍 正在测试前后端连接状态...\n');
  
  // 测试前端
  try {
    const frontendResponse = await axios.get('http://localhost:3001', { timeout: 5000 });
    console.log('✅ 前端服务: 运行正常 (http://localhost:3001)');
  } catch (error) {
    console.log('❌ 前端服务: 连接失败');
    console.log('   请确保前端服务已启动：cd frontend && npm run dev');
  }
  
  // 测试后端
  try {
    const backendResponse = await axios.get('http://localhost:8080/api/health', { timeout: 5000 });
    console.log('✅ 后端服务: 运行正常 (http://localhost:8080)');
  } catch (error) {
    if (error.response?.status === 404) {
      console.log('⚠️  后端服务: 已启动但缺少健康检查接口');
      console.log('   尝试测试其他接口...');
      
      // 尝试测试登录接口
      try {
        await axios.post('http://localhost:8080/api/auth/login', {}, { timeout: 5000 });
      } catch (loginError) {
        if (loginError.response?.status === 400 || loginError.response?.status === 401) {
          console.log('✅ 后端API: 可以访问 (状态码: ' + loginError.response.status + ')');
        } else {
          console.log('❌ 后端API: 响应异常');
        }
      }
    } else {
      console.log('❌ 后端服务: 连接失败');
      console.log('   请确保后端服务已启动：cd backend && ./mvnw spring-boot:run');
    }
  }
  
  // 测试代理转发
  try {
    const proxyResponse = await axios.get('http://localhost:3001/api/auth/login', { 
      timeout: 5000,
      validateStatus: () => true // 接受所有状态码
    });
    
    if (proxyResponse.status >= 200 && proxyResponse.status < 500) {
      console.log('✅ 代理转发: 工作正常');
    } else {
      console.log('❌ 代理转发: 可能存在问题');
    }
  } catch (error) {
    console.log('❌ 代理转发: 测试失败');
    console.log('   请检查 frontend/vite.config.js 中的代理配置');
  }
  
  console.log('\n📋 连接总结:');
  console.log('   前端地址: http://localhost:3001');
  console.log('   后端地址: http://localhost:8080');
  console.log('   API路径: /api/*');
  console.log('   代理配置: 前端请求 /api/* 会转发到后端');
}

testConnection().catch(console.error); 